#
# Resolvendo o problema dos baldes por branch & bound
#
# A conclus?o dos testes ? que este caminhamento gera solu??es t?o concisas
# quanto as o caminhamento breadth-first, mas com buscas muito mais r?pidas
# (mais at? do que as do caminhamento depth-first). Mas a busca ainda ?
# comparativamente lenta (cerca de 20 segundos) quando o destino n?o existe.
#

# 1o. teste
> (setq r (cria_baldes 0 0))
> (setf d (cria_baldes 2 0))
> (busca r d)
("Enche 5l" "Passa de 5l para 3l" "Esvazia 3l" "Passa de 5l para 3l")

# 2o. teste
> (setq r (cria_baldes 0 0))
> (setf d (cria_baldes 0 1))
> (busca r d)
("Enche 3l" "Passa de 3l para 5l" "Enche 3l" "Passa de 3l para 5l" "Esvazia 5l" "Passa de 3l para 5l")

# 3o. teste
> (setf r (cria_baldes 0 0))
> (setf d (cria_baldes 2 1))
> (busca r d)
("Impossivel encontrar caminho para o no'")

# 4o. teste
# O resultado faz sentido: n?o ? precisa nenhuma opera??o para transformar um
# estado nele mesmo!
> (setf r (cria_baldes 0 0))
> (busca r r)
NIL
